package com.platform.core.service;

import com.platform.comm.service.CommonBiz;
import com.platform.core.entity.NcloudSysInterfaceEntity;
import com.platform.dto.InterfaceDto;
import com.platform.dto.InterfaceTypeDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * Description: NcloudSysInterface 业务层接口
 *
 * @author Coder
 */
public interface NcloudSysInterfaceBiz extends CommonBiz<NcloudSysInterfaceEntity,String> {

    /**
     * 分页查询接口
     *
     * @param param   查询参数
     * @param pageable    分页参数
     * @return 接口列表
     */
    Page<InterfaceDto> search(Map<String, String> param, Pageable pageable);

    /**
     * 根据ID查询接口
     *
     * @param id 接口ID
     * @return 接口
     */
    InterfaceDto detail(String id);

    /**
     * 新增接口
     *
     * @param req 新增信息
     */
    void create(InterfaceDto req);

    /**
     * 修改接口
     *
     * @param req 修改内容
     */
    void modify(InterfaceDto req);

    /**
     * 删除接口
     *
     * @param id 接口ID
     */
    void remove(String id);

    /**
     * 发布接口
     * @param id
     */
    void publish(String id);

    /**
     * 查询已发布的接口
     * @param parentId 参数
     * @return
     */
    List<InterfaceTypeDto> searchPublish(String parentId);

    /**
     * 克隆接口
     * @param param 参数
     */
    void clone(Map<String, String> param) throws CloneNotSupportedException;

    /**
     * 设置接口已被使用
     * @param id 接口id
     * @return
     */
    void setIsUsed(String id);

}
